One or more aspects of the invention relate, in general, to devices within a communications environment, and in particular, to avoiding deadlocks within the devices.
Devices are used within a communications environment, such as a computing environment, to facilitate communications between various components of the environment. For instance, a device may be coupled to an external device at one end and a system bus at the other, and the device receives requests from the external device and forwards them to a system component via the system bus.
Many types of devices may be used for communication, including PCIe (Peripheral Component Interconnect Express) devices. PCIe devices are based on PCIe technology, which is a point-to-point technology. PCIe devices communicate via a logical connection called an interconnect or link. A link is a point-to-point communication channel between two PCIe ports, allowing both to send/receive ordinary PCI-requests (configuration read/write, I/O read/write, memory read/write) and interrupts.
PCIe has associated therewith a specification that provides particular rules to be followed for communications using PCIe devices. This specification is developed and maintained by the PCI-SIG (PCI Special Interest Group). One such rule is an ordering rule that dictates the order in which requests, including transactions, are to be processed.